package com.liu.design.structure.component;

/**
 * @author LIU
 * @version 1.0
 * @date 2024/5/6 14:39
 * @description 组合模式
 * Component ：组合中的对象声明接口，用于访问和管理Component子部件。
 * Leaf：单个/叶子对象，叶子结点没有子结点。
 * Composite：组合/容器对象，存储子部件和枝节点行为，实现与子部件有关操作，如增加(add)和删除(remove)等，list实现容器，容纳Component对象。
 *
 * 组合折扣策略（以双十一的折扣为例，有VIP折扣、活动折扣、满减、店铺优惠券、红包）
 *    精打细算的我们往往是同时满足多种折扣方案，这时就可以用组合模式，把这些单个折扣方案组合容纳起来，
 *    然后定义解决折扣冲突策略。实现单个对象和组合对象的统一，让调用者使用时不必在区分。
 *    涉及了点工厂模式和策略模式，DiscountFactory就是实例化Order类的属性DiscountStrategy的工厂，各种折扣策略实现同一接口。
 */
public class Test {
    public static void main(String[] args) {
        Order order=new Order(1620);
        order.display();
    }
}
